package com.tianji.promotion.service;

import com.tianji.api.dto.promotion.CouponDiscountDTO;
import com.tianji.api.dto.promotion.OrderCouponDTO;
import com.tianji.api.dto.promotion.OrderCourseDTO;

import java.util.List;

/**
 * ClassName: IDiscountService
 * Package: com.tianji.promotion.service
 * Description:
 *
 * @author zr
 * Create 2024/8/7 15:21
 * Version 1.0
 */
public interface IDiscountService {
    /**
     * 查找适用的优惠券折扣方案
     * <p>
     * 此方法旨在根据订单中的课程信息，找出所有适用的优惠券折扣详情
     * 它是连接订单信息和优惠券系统的桥梁，确保客户在购买课程时能够享受到适用的折扣
     *
     * @param orderCourses 购买订单中的课程列表，包含课程ID、课程价格等信息
     * @return 返回一个包含所有适用优惠券折扣详情的列表，每个折扣详情包括优惠券ID、折扣金额等
     */
    List<CouponDiscountDTO> findDiscountSolution(List<OrderCourseDTO> orderCourses);

    /**
     * 根据订单查询优惠券详情
     * <p>
     * 此方法的主要目的是根据订单中的优惠券信息，查询并返回优惠券的具体折扣详情
     * 它用于在处理订单时，确保能够根据优惠券的规则正确地应用折扣
     *
     * @param orderCouponDTO 订单优惠券信息对象，包含订单和优惠券的相关信息
     * @return CouponDiscountDTO 返回优惠券折扣详情对象，包含优惠券的具体折扣信息
     */
    CouponDiscountDTO queryDiscountDetailByOrder(OrderCouponDTO orderCouponDTO);
}
